home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / map.h.z / map.h
C/C++ Source or Header  |  1992-04-03  |  2KB  |  74 lines

  1. /*    Copyright (c) 1984 AT&T    */
  2. /*      All Rights Reserved      */
  3.  
  4. /*    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T    */
  5. /*    The copyright notice above does not evidence any       */
  6. /*    actual or intended publication of such source code.    */
  7.  
  8. /*#ident    "@(#)kern-port:sys/map.h    10.2"*/
  9. #ident    "$Revision: 3.6 $"
  10.  
  11. /*
  12.  *    struct map    X[]    .m_size        .m_addr
  13.  *            ---    ------------    -----------
  14.  *            [0]    mapsize(X)    unused
  15.  *                # X[] unused
  16.  *            [1]    map lock *    mapwant sema *
  17.  *                map access    wait for free map space
  18.  *
  19.  *      mapstart(X)->    [2]    # units        unit number
  20.  *             :        :          :
  21.  *            [ ]        0
  22.  */
  23.  
  24. struct map
  25. {
  26.     unsigned long m_size;    /* number of units available */
  27.     unsigned long m_addr;    /* address of first available unit */
  28. };
  29.  
  30. #define    mapstart(X)        &X[2]        /* start of map array */
  31.  
  32. #define    mapsize(X)        X[0].m_size    /* number of empty slots */
  33.                         /* remaining in map array */
  34. #define    mapdata(X)        {(X)-3, 0} , {0, 0}
  35.  
  36. #define    mapinit(X, Y, A, B)    X[0].m_size = (Y)-3;\
  37.                 X[1].m_size = (unsigned long) A;\
  38.                 X[1].m_addr = (unsigned long) B
  39.  
  40. #define maplock(X)        (*((lock_t *) X[1].m_size))
  41.  
  42. #define mapout(X)        ((sema_t *) X[1].m_addr)
  43.  
  44. #define    mapdefine(mapsize, nfree, start, maplock, mapout) \
  45.     { (mapsize)-3, 0 } ,\
  46.     { (unsigned long) maplock, (unsigned long) mapout },\
  47.     { (nfree), (start) },\
  48.     { 0, 0 }
  49.  
  50. extern uint malloc();
  51.  
  52. #include <sys/sema.h>
  53.  
  54. #define BITSPERBYTE    8
  55. #define BITSPERWORD    32
  56.  
  57. struct bitmap {
  58.     sema_t    m_waitsema;    /* semaphore for waiters */
  59.     lock_t    m_lock;        /* map protections */
  60.     int    m_unit0;    /* value of unit[0] */
  61.     u_short    m_size;        /* map units available */
  62.     u_short    m_lowbit;    /* low-unit mark */
  63.     short    m_waitcnt;    /* count of waiters */
  64.     char    *m_map;        /* the bitmap itself */
  65. };
  66.  
  67. extern struct bitmap sptbitmap;    /* Map for system virtual space.   */
  68. extern struct bitmap ssptbitmap;/* Map for stale system virtual space.   */
  69. extern struct bitmap ssptsnap;
  70. extern lock_t    msgmplock;
  71. extern sema_t    msgmpout;
  72. extern lock_t    semmplock;
  73. extern sema_t    semmpout;
  74.